#ifndef BEHAVIOUR_HEADER_FROM_AI_INCLUDED
#define BEHAVIOUR_HEADER_FROM_AI_INCLUDED
////////////////////////////////////////////////////////////////////////////////
//	Copyright (c) 2004 by Michael 'Astar' Sotnikov
//	stari4ek at gmail dot com
////////////////////////////////////////////////////////////////////////////////
//#include <string>
//#include <vector>

#include <boost/serialization/nvp.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/vector.hpp>

#include "aiBrainConstants.hpp"
#include "aiFilters.hpp"

namespace ai{
	
////////////////////////////////////////////////////////////////////////////////
struct BehaviourInfo_s{
	std::string								m_name;
	std::string								m_desc;
	float									m_lod_priority;						// Level of Detail

	typedef std::vector<FilterId_t>			FiltersPrereqList_t;	
	FiltersPrereqList_t						m_prereq_filters;
	
	typedef std::vector<BrainConstantId_t>	BrainConstantsPrereqList_t;	
	BrainConstantsPrereqList_t				m_prereq_constants;
	
	std::string								m_script_bind;
	
	template< class Archive >
    void serialize( Archive & ar, const unsigned int ){
    	ar & boost::serialization::make_nvp( "name",				m_name );
    	ar & boost::serialization::make_nvp( "description", 		m_desc );
    	ar & boost::serialization::make_nvp( "lod_priority", 		m_lod_priority );
    	ar & boost::serialization::make_nvp( "prereq_filters", 		m_prereq_filters );
    	ar & boost::serialization::make_nvp( "prereq_constants",	m_prereq_constants );
    	ar & boost::serialization::make_nvp( "script_bind", 		m_script_bind );
    }
};


} // ai


#endif /* BEHAVIOUR_HEADER_FROM_AI_INCLUDED */
